'************************** 'Akizuki_dds cont Ver 0.3.3 'pare LM32C041_13.bas '2007.12.22 'JA4LAO 'ATmega48-27Mhz '************************** Config Portc.1 = Output 'lcd Config Portc.2 = Input Config Portc.3 = Output 'lcd Config Portc.4 = Output Config Portc.5 = Output 'data_in Config Portd.0 = Input Config Portd.2 = Input 'shiftin Config Portd.1 = Output 'shiftin Config Portd.3 = Input 'shiftin Config Portd.4 = Output 'dds Config Portd.5 = Output 'dds Config Portd.6 = Output 'dds Config Debounce = 3 Dim D_com As Byte Dim Freq_data As Long Dim F_start As Long Dim F_stop As Long Dim F_span As Long Dim F_hosei As Long Dim Sweep_time As Long Dim Dds_data(3) As Long Dim I As Word Dim J As Byte Dim N As Word Dim M As Bit D_com = &B01100111 Dds_data(1) = 0 'center_freq 500MHz Dds_data(2) = 1000000 'freq_span 1000MHz Dds_data(3) = 630 'sweep time Gosub Data_setei Reset Portc.5 Main: Wait 1 Do Gosub Lcd_hyouji Loop End Lcd_hyouji: Gosub Data_in Freq_data = Dds_data(1) Select Case Freq_data Case Is < 4600000 : F_hosei = 180 Case 4600001 To 5400000 : F_hosei = 185 Case 5400001 To 5800000 : F_hosei = 190 Case 5800001 To 6200000 : F_hosei = 195 Case 6200001 To 6600000 : F_hosei = 200 Case 6600001 To 7000000 : F_hosei = 205 Case 7000001 To 7400000 : F_hosei = 210 Case 7400001 To 7800000 : F_hosei = 215 Case Is > 7800001 : F_hosei = 220 End Select Freq_data = Freq_data + F_hosei Reset Portc.1 For I = 1 To 240 Set Portd.6 Shiftout Portd.5 , Portd.4 , D_com , 3 , 7 , 5 Shiftout Portd.5 , Portd.4 , Freq_data , 3 , 26 , 5 Reset Portd.6 Set Portc.1 Bitwait Pinc.2 , Set Reset Portc.1 Freq_data = Freq_data + F_span If Freq_data > 6200000 Then Set Portc.5 Else Reset Portc.5 For N = 1 To Sweep_time Next N Next I Return Data_in: Set Portc.4 Set Portc.3 For J = 1 To 3 Bitwait Pind.3 , Set Shiftin Pind.0 , Portd.1 , Dds_data(j) , 1 , 32 , 50 Bitwait Pind.3 , Reset Next J Reset Portc.3 Reset Portc.4 Gosub Data_setei Return Data_setei: Dds_data(1) = Dds_data(1) * 1000 Dds_data(1) = Dds_data(1) + 1050000000 Dds_data(1) = Dds_data(1) / 250 Dds_data(2) = Dds_data(2) * 1000 Dds_data(2) = Dds_data(2) + 1050000000 Dds_data(2) = Dds_data(2) / 250 F_span = Dds_data(2) - Dds_data(1) F_span = F_span / 240 Sweep_time = Dds_data(3) Sweep_time = Sweep_time - 629 Return